package com.doitedu.core

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Date: 22.6.29 
 * @Author: HANGGE
 * @qq: 598196583
 * @Tips: 学大数据 ,到多易教育
 * @Description:
 * 本地集合 :
 *    默认的分区数是当前可以用的所有的核数
 *    可以在创建RDD的时候指定参数2  (分区数)
 *
 */
object C08RDD_Collections_Partitions_Data {

  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setAppName("RDD的分区数").setMaster("local[*]")
    val sc = new SparkContext(conf)

    // 本地集合转换成RDD
    val  ls = List[Int](1,2,3,4,5,6,7)
    // 默认值是当前可以的所有核数
    val rdd = sc.makeRDD(ls , 3)
    // 每个元素处理一次  调用方法中的一次函数 1*10  2 *10
   // rdd.map((e: Int) =>e*10)
    //每个分区处理一次 iters 当前分区的处理的数据

    /**
     * 以数据的分区为单位处理数据
     * iter=>iter
     * (区内数据)=>返回各个分区处理后的数据
     */
  /*  rdd.mapPartitions(iters=>{
      var  index  = 0
      index+=1
      iters.map(e=>e+"--"+index)
    }).foreach(println)*/

    rdd.mapPartitions(iters=>{
      var  index  = 0
      iters.map(e=>{
        index+=1
        e+"--"+index
      })
    }).foreach(println)

    /**
     * 以数据的分区为单位处理数据
     * (分区编号,区内数据)=>返回各个分区处理后的数据
     * (p,iter)=>iter
     */
  /*
      rdd.mapPartitionsWithIndex((p,iters)=>{
        iters.map(e=>(e,p))
      }).foreach(println)
  */


  }

}
